<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>XMP Toolkit SDK: TXMPUtils Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xmp_tagline_small.jpg"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">XMP Toolkit SDK
   &#160;<span id="projectnumber">6.0.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classTXMPUtils.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pri-static-methods">Static Private Member Functions</a> &#124;
<a href="classTXMPUtils-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">TXMPUtils Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>API for access to the XMP Toolkit utility services.  
 <a href="classTXMPUtils.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="TXMPMeta_8hpp_source.html">TXMPMeta.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Path composition</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>These functions provide support for composing path expressions to deeply nested properties. The functions in <code><a class="el" href="classTXMPMeta.html" title="API for access to the XMP Toolkit core services.">TXMPMeta</a></code> such as <code><a class="el" href="classTXMPMeta.html#ac504ffd454828f1047259c4f8e0f46d8" title="GetProperty() reports whether a property exists, and retrieves its value.">TXMPMeta::GetProperty()</a></code>, <code><a class="el" href="classTXMPMeta.html#aca1daf6e8395700d899619ae78caf781" title="GetArrayItem() provides access to items within an array.">TXMPMeta::GetArrayItem()</a></code>, and <code><a class="el" href="classTXMPMeta.html#ae99d2bc414d5cd68851147aef6710d4a" title="GetStructField() provides access to fields within a nested structure.">TXMPMeta::GetStructField()</a></code> provide easy access to top level simple properties, items in top level arrays, and fields of top level structs. They are not as convenient for more complex things, such as fields several levels deep in a complex struct, or fields within an array of structs, or items of an array that is a field of a struct. You can use these utility functions to compose these paths, which you can then pass to the property access functions. You can also compose paths to top-level array items or </p>
</div></td></tr>
<tr class="memitem:a24c181aa8e80b215675d76b74631985e"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a24c181aa8e80b215675d76b74631985e">ComposeArrayItemPath</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#a00e9d9a76c144421105a4c2742203315">XMP_Index</a> itemIndex, tStringObj *fullPath)</td></tr>
<tr class="memdesc:a24c181aa8e80b215675d76b74631985e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a24c181aa8e80b215675d76b74631985e" title="ComposeArrayItemPath() composes the path expression for an item in an array.">ComposeArrayItemPath()</a></code> composes the path expression for an item in an array.  <a href="classTXMPUtils.html#a24c181aa8e80b215675d76b74631985e">More...</a><br /></td></tr>
<tr class="separator:a24c181aa8e80b215675d76b74631985e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44cc195054f1a28e102b6745daa6c905"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a44cc195054f1a28e102b6745daa6c905">ComposeStructFieldPath</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> structName, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName, tStringObj *fullPath)</td></tr>
<tr class="memdesc:a44cc195054f1a28e102b6745daa6c905"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a44cc195054f1a28e102b6745daa6c905" title="ComposeStructFieldPath() composes the path expression for a field in a struct.">ComposeStructFieldPath()</a></code> composes the path expression for a field in a struct.  <a href="classTXMPUtils.html#a44cc195054f1a28e102b6745daa6c905">More...</a><br /></td></tr>
<tr class="separator:a44cc195054f1a28e102b6745daa6c905"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a944bebd0b19467a988a02c6b642b2810"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a944bebd0b19467a988a02c6b642b2810">ComposeQualifierPath</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualName, tStringObj *fullPath)</td></tr>
<tr class="memdesc:a944bebd0b19467a988a02c6b642b2810"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a944bebd0b19467a988a02c6b642b2810" title="ComposeQualifierPath() composes the path expression for a qualifier.">ComposeQualifierPath()</a></code> composes the path expression for a qualifier.  <a href="classTXMPUtils.html#a944bebd0b19467a988a02c6b642b2810">More...</a><br /></td></tr>
<tr class="separator:a944bebd0b19467a988a02c6b642b2810"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecea12ca2bcd86b71569b87fa3a187eb"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#aecea12ca2bcd86b71569b87fa3a187eb">ComposeLangSelector</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> langName, tStringObj *fullPath)</td></tr>
<tr class="memdesc:aecea12ca2bcd86b71569b87fa3a187eb"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#aecea12ca2bcd86b71569b87fa3a187eb" title="ComposeLangSelector() composes the path expression to select an alternate item by language.">ComposeLangSelector()</a></code> composes the path expression to select an alternate item by language.  <a href="classTXMPUtils.html#aecea12ca2bcd86b71569b87fa3a187eb">More...</a><br /></td></tr>
<tr class="separator:aecea12ca2bcd86b71569b87fa3a187eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02ebf2df1df0c8ff914a0abed9e01d8d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a02ebf2df1df0c8ff914a0abed9e01d8d">ComposeLangSelector</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, const tStringObj &amp;langName, tStringObj *fullPath)</td></tr>
<tr class="memdesc:a02ebf2df1df0c8ff914a0abed9e01d8d"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#aecea12ca2bcd86b71569b87fa3a187eb" title="ComposeLangSelector() composes the path expression to select an alternate item by language.">ComposeLangSelector()</a></code> composes a path expression to select an alternate item by language.  <a href="classTXMPUtils.html#a02ebf2df1df0c8ff914a0abed9e01d8d">More...</a><br /></td></tr>
<tr class="separator:a02ebf2df1df0c8ff914a0abed9e01d8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac170c536e7b4be4da27eca9660889726"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#ac170c536e7b4be4da27eca9660889726">ComposeFieldSelector</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldValue, tStringObj *fullPath)</td></tr>
<tr class="memdesc:ac170c536e7b4be4da27eca9660889726"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#ac170c536e7b4be4da27eca9660889726" title="ComposeFieldSelector() composes a path expression to select an alternate item by a field&#39;s value.">ComposeFieldSelector()</a></code> composes a path expression to select an alternate item by a field's value.  <a href="classTXMPUtils.html#ac170c536e7b4be4da27eca9660889726">More...</a><br /></td></tr>
<tr class="separator:ac170c536e7b4be4da27eca9660889726"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a462c2fd217b5a573c80427656368aeb7"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a462c2fd217b5a573c80427656368aeb7">ComposeFieldSelector</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName, const tStringObj &amp;fieldValue, tStringObj *fullPath)</td></tr>
<tr class="memdesc:a462c2fd217b5a573c80427656368aeb7"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#ac170c536e7b4be4da27eca9660889726" title="ComposeFieldSelector() composes a path expression to select an alternate item by a field&#39;s value.">ComposeFieldSelector()</a></code> composes a path expression to select an alternate item by a field's value.  <a href="classTXMPUtils.html#a462c2fd217b5a573c80427656368aeb7">More...</a><br /></td></tr>
<tr class="separator:a462c2fd217b5a573c80427656368aeb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Conversion between binary types and strings</div></td></tr>
<tr class="memitem:aac7c8b47aea7bcb70f102ce94d4e9dfb"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#aac7c8b47aea7bcb70f102ce94d4e9dfb">ConvertFromBool</a> (bool binValue, tStringObj *strValue)</td></tr>
<tr class="memdesc:aac7c8b47aea7bcb70f102ce94d4e9dfb"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#aac7c8b47aea7bcb70f102ce94d4e9dfb" title="ConvertFromBool() converts a Boolean value to a string.">ConvertFromBool()</a></code> converts a Boolean value to a string.  <a href="classTXMPUtils.html#aac7c8b47aea7bcb70f102ce94d4e9dfb">More...</a><br /></td></tr>
<tr class="separator:aac7c8b47aea7bcb70f102ce94d4e9dfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9aeba82d4e026d3fe41a1d17a12138c1"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a9aeba82d4e026d3fe41a1d17a12138c1">ConvertFromInt</a> (long binValue, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> format, tStringObj *strValue)</td></tr>
<tr class="memdesc:a9aeba82d4e026d3fe41a1d17a12138c1"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a9aeba82d4e026d3fe41a1d17a12138c1" title="ConvertFromInt() converts a 32-bit integer value to a string.">ConvertFromInt()</a></code> converts a 32-bit integer value to a string.  <a href="classTXMPUtils.html#a9aeba82d4e026d3fe41a1d17a12138c1">More...</a><br /></td></tr>
<tr class="separator:a9aeba82d4e026d3fe41a1d17a12138c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55121e042306ef76833a00f782d4a726"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a55121e042306ef76833a00f782d4a726">ConvertFromInt64</a> (long long binValue, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> format, tStringObj *strValue)</td></tr>
<tr class="memdesc:a55121e042306ef76833a00f782d4a726"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a55121e042306ef76833a00f782d4a726" title="ConvertFromInt64() converts a 64-bit integer value to a string.">ConvertFromInt64()</a></code> converts a 64-bit integer value to a string.  <a href="classTXMPUtils.html#a55121e042306ef76833a00f782d4a726">More...</a><br /></td></tr>
<tr class="separator:a55121e042306ef76833a00f782d4a726"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a901418649be0957cc0b6974f14ec6952"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a901418649be0957cc0b6974f14ec6952">ConvertFromFloat</a> (double binValue, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> format, tStringObj *strValue)</td></tr>
<tr class="memdesc:a901418649be0957cc0b6974f14ec6952"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a901418649be0957cc0b6974f14ec6952" title="ConvertFromFloat() converts a floating-point value to a string.">ConvertFromFloat()</a></code> converts a floating-point value to a string.  <a href="classTXMPUtils.html#a901418649be0957cc0b6974f14ec6952">More...</a><br /></td></tr>
<tr class="separator:a901418649be0957cc0b6974f14ec6952"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56f5b39382a924d77db2037bc6ac8360"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a56f5b39382a924d77db2037bc6ac8360">ConvertFromDate</a> (const <a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> &amp;binValue, tStringObj *strValue)</td></tr>
<tr class="memdesc:a56f5b39382a924d77db2037bc6ac8360"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a56f5b39382a924d77db2037bc6ac8360" title="ConvertFromDate() converts a date/time value to a string.">ConvertFromDate()</a></code> converts a date/time value to a string.  <a href="classTXMPUtils.html#a56f5b39382a924d77db2037bc6ac8360">More...</a><br /></td></tr>
<tr class="separator:a56f5b39382a924d77db2037bc6ac8360"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06a2373bdd4c0bee2d9186354dcc857f"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a06a2373bdd4c0bee2d9186354dcc857f">ConvertToBool</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> strValue)</td></tr>
<tr class="memdesc:a06a2373bdd4c0bee2d9186354dcc857f"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a06a2373bdd4c0bee2d9186354dcc857f" title="ConvertToBool() converts a string to a Boolean value.">ConvertToBool()</a></code> converts a string to a Boolean value.  <a href="classTXMPUtils.html#a06a2373bdd4c0bee2d9186354dcc857f">More...</a><br /></td></tr>
<tr class="separator:a06a2373bdd4c0bee2d9186354dcc857f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0a08cd71bb77e83cd3282220f75cb00"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#ab0a08cd71bb77e83cd3282220f75cb00">ConvertToBool</a> (const tStringObj &amp;strValue)</td></tr>
<tr class="memdesc:ab0a08cd71bb77e83cd3282220f75cb00"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a06a2373bdd4c0bee2d9186354dcc857f" title="ConvertToBool() converts a string to a Boolean value.">ConvertToBool()</a></code> converts a string to a Boolean value.  <a href="classTXMPUtils.html#ab0a08cd71bb77e83cd3282220f75cb00">More...</a><br /></td></tr>
<tr class="separator:ab0a08cd71bb77e83cd3282220f75cb00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a807f3506cd34f00da51b0b9303de3dca"><td class="memItemLeft" align="right" valign="top">static long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a807f3506cd34f00da51b0b9303de3dca">ConvertToInt</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> strValue)</td></tr>
<tr class="memdesc:a807f3506cd34f00da51b0b9303de3dca"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a807f3506cd34f00da51b0b9303de3dca" title="ConvertToInt() converts a string to a 32-bit integer value.">ConvertToInt()</a></code> converts a string to a 32-bit integer value.  <a href="classTXMPUtils.html#a807f3506cd34f00da51b0b9303de3dca">More...</a><br /></td></tr>
<tr class="separator:a807f3506cd34f00da51b0b9303de3dca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a805172007015c0ffe11c6be5b124dfba"><td class="memItemLeft" align="right" valign="top">static long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a805172007015c0ffe11c6be5b124dfba">ConvertToInt</a> (const tStringObj &amp;strValue)</td></tr>
<tr class="memdesc:a805172007015c0ffe11c6be5b124dfba"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a807f3506cd34f00da51b0b9303de3dca" title="ConvertToInt() converts a string to a 32-bit integer value.">ConvertToInt()</a></code> converts a string to a 32-bit integer value.  <a href="classTXMPUtils.html#a805172007015c0ffe11c6be5b124dfba">More...</a><br /></td></tr>
<tr class="separator:a805172007015c0ffe11c6be5b124dfba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ac012128453865dce762e65342e6cee"><td class="memItemLeft" align="right" valign="top">static long long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a2ac012128453865dce762e65342e6cee">ConvertToInt64</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> strValue)</td></tr>
<tr class="memdesc:a2ac012128453865dce762e65342e6cee"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a2ac012128453865dce762e65342e6cee" title="ConvertToInt64() converts a string to a 64-bit integer value.">ConvertToInt64()</a></code> converts a string to a 64-bit integer value.  <a href="classTXMPUtils.html#a2ac012128453865dce762e65342e6cee">More...</a><br /></td></tr>
<tr class="separator:a2ac012128453865dce762e65342e6cee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c8eafe42c3386f4daee1a67b6b2fbdb"><td class="memItemLeft" align="right" valign="top">static long long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a9c8eafe42c3386f4daee1a67b6b2fbdb">ConvertToInt64</a> (const tStringObj &amp;strValue)</td></tr>
<tr class="memdesc:a9c8eafe42c3386f4daee1a67b6b2fbdb"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a2ac012128453865dce762e65342e6cee" title="ConvertToInt64() converts a string to a 64-bit integer value.">ConvertToInt64()</a></code> converts a string to a 64-bit integer value.  <a href="classTXMPUtils.html#a9c8eafe42c3386f4daee1a67b6b2fbdb">More...</a><br /></td></tr>
<tr class="separator:a9c8eafe42c3386f4daee1a67b6b2fbdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae31127683540d7c2b6c246a8d1060f87"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#ae31127683540d7c2b6c246a8d1060f87">ConvertToFloat</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> strValue)</td></tr>
<tr class="memdesc:ae31127683540d7c2b6c246a8d1060f87"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#ae31127683540d7c2b6c246a8d1060f87" title="ConvertToFloat() converts a string to a floating-point value.">ConvertToFloat()</a></code> converts a string to a floating-point value.  <a href="classTXMPUtils.html#ae31127683540d7c2b6c246a8d1060f87">More...</a><br /></td></tr>
<tr class="separator:ae31127683540d7c2b6c246a8d1060f87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02d41b6bbc3698cc67d496984ab3f13e"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a02d41b6bbc3698cc67d496984ab3f13e">ConvertToFloat</a> (const tStringObj &amp;strValue)</td></tr>
<tr class="memdesc:a02d41b6bbc3698cc67d496984ab3f13e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#ae31127683540d7c2b6c246a8d1060f87" title="ConvertToFloat() converts a string to a floating-point value.">ConvertToFloat()</a></code> converts a string to a floating-point value.  <a href="classTXMPUtils.html#a02d41b6bbc3698cc67d496984ab3f13e">More...</a><br /></td></tr>
<tr class="separator:a02d41b6bbc3698cc67d496984ab3f13e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73e684233b13ff7b2181eb176616e763"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a73e684233b13ff7b2181eb176616e763">ConvertToDate</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> strValue, <a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> *binValue)</td></tr>
<tr class="memdesc:a73e684233b13ff7b2181eb176616e763"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a73e684233b13ff7b2181eb176616e763" title="ConvertToDate() converts a string to a date/time value.">ConvertToDate()</a></code> converts a string to a date/time value.  <a href="classTXMPUtils.html#a73e684233b13ff7b2181eb176616e763">More...</a><br /></td></tr>
<tr class="separator:a73e684233b13ff7b2181eb176616e763"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafa9a5bfaf83f394870e903424855c24"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#aafa9a5bfaf83f394870e903424855c24">ConvertToDate</a> (const tStringObj &amp;strValue, <a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> *binValue)</td></tr>
<tr class="memdesc:aafa9a5bfaf83f394870e903424855c24"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a73e684233b13ff7b2181eb176616e763" title="ConvertToDate() converts a string to a date/time value.">ConvertToDate()</a></code> converts a string to a date/time value.  <a href="classTXMPUtils.html#aafa9a5bfaf83f394870e903424855c24">More...</a><br /></td></tr>
<tr class="separator:aafa9a5bfaf83f394870e903424855c24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Date-time manipulation</div></td></tr>
<tr class="memitem:a749581f90883b8aa051e216c7bf57e3c"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a749581f90883b8aa051e216c7bf57e3c">CurrentDateTime</a> (<a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> *time)</td></tr>
<tr class="memdesc:a749581f90883b8aa051e216c7bf57e3c"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a749581f90883b8aa051e216c7bf57e3c" title="CurrentDateTime() obtains the current date and time.">CurrentDateTime()</a></code> obtains the current date and time.  <a href="classTXMPUtils.html#a749581f90883b8aa051e216c7bf57e3c">More...</a><br /></td></tr>
<tr class="separator:a749581f90883b8aa051e216c7bf57e3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2ebcf9473500d3d1e10fed4b9072f7d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#ad2ebcf9473500d3d1e10fed4b9072f7d">SetTimeZone</a> (<a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> *time)</td></tr>
<tr class="memdesc:ad2ebcf9473500d3d1e10fed4b9072f7d"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#ad2ebcf9473500d3d1e10fed4b9072f7d" title="SetTimeZone() sets the time zone in a date/time value to the local time zone.">SetTimeZone()</a></code> sets the time zone in a date/time value to the local time zone.  <a href="classTXMPUtils.html#ad2ebcf9473500d3d1e10fed4b9072f7d">More...</a><br /></td></tr>
<tr class="separator:ad2ebcf9473500d3d1e10fed4b9072f7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57d6c93a72455930040979e4d3498c1b"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a57d6c93a72455930040979e4d3498c1b">ConvertToUTCTime</a> (<a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> *time)</td></tr>
<tr class="memdesc:a57d6c93a72455930040979e4d3498c1b"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a57d6c93a72455930040979e4d3498c1b" title="ConvertToUTCTime() ensures that a time is UTC.">ConvertToUTCTime()</a></code> ensures that a time is UTC.  <a href="classTXMPUtils.html#a57d6c93a72455930040979e4d3498c1b">More...</a><br /></td></tr>
<tr class="separator:a57d6c93a72455930040979e4d3498c1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56552bb9a82a5dfc64b5630fa571876a"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a56552bb9a82a5dfc64b5630fa571876a">ConvertToLocalTime</a> (<a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> *time)</td></tr>
<tr class="memdesc:a56552bb9a82a5dfc64b5630fa571876a"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a56552bb9a82a5dfc64b5630fa571876a" title="ConvertToLocalTime() ensures that a time is local.">ConvertToLocalTime()</a></code> ensures that a time is local.  <a href="classTXMPUtils.html#a56552bb9a82a5dfc64b5630fa571876a">More...</a><br /></td></tr>
<tr class="separator:a56552bb9a82a5dfc64b5630fa571876a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a963cf8e8c098234d92547fa828b1c8"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a1a963cf8e8c098234d92547fa828b1c8">CompareDateTime</a> (const <a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> &amp;left, const <a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> &amp;right)</td></tr>
<tr class="memdesc:a1a963cf8e8c098234d92547fa828b1c8"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a1a963cf8e8c098234d92547fa828b1c8" title="CompareDateTime() compares the order of two date/time values.">CompareDateTime()</a></code> compares the order of two date/time values.  <a href="classTXMPUtils.html#a1a963cf8e8c098234d92547fa828b1c8">More...</a><br /></td></tr>
<tr class="separator:a1a963cf8e8c098234d92547fa828b1c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Base64 encoding and decoding</div></td></tr>
<tr class="memitem:a295acb3b212a88db95e8f448ee6ee514"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a295acb3b212a88db95e8f448ee6ee514">EncodeToBase64</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> rawStr, <a class="el" href="XMP__Const_8h.html#a9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> rawLen, tStringObj *encodedStr)</td></tr>
<tr class="memdesc:a295acb3b212a88db95e8f448ee6ee514"><td class="mdescLeft">&#160;</td><td class="mdescRight">These functions convert between raw data values and Base64-encoded strings.  <a href="classTXMPUtils.html#a295acb3b212a88db95e8f448ee6ee514">More...</a><br /></td></tr>
<tr class="separator:a295acb3b212a88db95e8f448ee6ee514"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66222ad61001d59f63a8ddb216040488"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a66222ad61001d59f63a8ddb216040488">EncodeToBase64</a> (const tStringObj &amp;rawStr, tStringObj *encodedStr)</td></tr>
<tr class="memdesc:a66222ad61001d59f63a8ddb216040488"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a295acb3b212a88db95e8f448ee6ee514" title="These functions convert between raw data values and Base64-encoded strings.">EncodeToBase64()</a></code> converts a raw data value passed in a string object to a Base64-encoded string.  <a href="classTXMPUtils.html#a66222ad61001d59f63a8ddb216040488">More...</a><br /></td></tr>
<tr class="separator:a66222ad61001d59f63a8ddb216040488"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2c573d4f1aaa30f60d82eadce4b1929"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#ad2c573d4f1aaa30f60d82eadce4b1929">DecodeFromBase64</a> (<a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> encodedStr, <a class="el" href="XMP__Const_8h.html#a9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> encodedLen, tStringObj *rawStr)</td></tr>
<tr class="memdesc:ad2c573d4f1aaa30f60d82eadce4b1929"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#ad2c573d4f1aaa30f60d82eadce4b1929" title="DecodeFromBase64() Decodes a Base64-encoded string to raw data.">DecodeFromBase64()</a></code> Decodes a Base64-encoded string to raw data.  <a href="classTXMPUtils.html#ad2c573d4f1aaa30f60d82eadce4b1929">More...</a><br /></td></tr>
<tr class="separator:ad2c573d4f1aaa30f60d82eadce4b1929"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabfee82ff284672720fc8ffdc0a76432"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#aabfee82ff284672720fc8ffdc0a76432">DecodeFromBase64</a> (const tStringObj &amp;encodedStr, tStringObj *rawStr)</td></tr>
<tr class="memdesc:aabfee82ff284672720fc8ffdc0a76432"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#ad2c573d4f1aaa30f60d82eadce4b1929" title="DecodeFromBase64() Decodes a Base64-encoded string to raw data.">DecodeFromBase64()</a></code> Decodes a Base64-encoded string, passed as a string object, to raw data.  <a href="classTXMPUtils.html#aabfee82ff284672720fc8ffdc0a76432">More...</a><br /></td></tr>
<tr class="separator:aabfee82ff284672720fc8ffdc0a76432"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">JPEG file handling</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>These functions support the partitioning of XMP in JPEG files into standard and extended portions in order to work around the 64KB size limit of JPEG marker segments. </p>
</div></td></tr>
<tr class="memitem:aecb05174386c3aee51905e134bdab39e"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#aecb05174386c3aee51905e134bdab39e">PackageForJPEG</a> (const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;xmpObj, tStringObj *standardXMP, tStringObj *extendedXMP, tStringObj *extendedDigest)</td></tr>
<tr class="memdesc:aecb05174386c3aee51905e134bdab39e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#aecb05174386c3aee51905e134bdab39e" title="PackageForJPEG() creates XMP serializations appropriate for a JPEG file.">PackageForJPEG()</a></code> creates XMP serializations appropriate for a JPEG file.  <a href="classTXMPUtils.html#aecb05174386c3aee51905e134bdab39e">More...</a><br /></td></tr>
<tr class="separator:aecb05174386c3aee51905e134bdab39e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c545d270ea567da81427ae480fe2ce1"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a2c545d270ea567da81427ae480fe2ce1">MergeFromJPEG</a> (<a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; *fullXMP, const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;extendedXMP)</td></tr>
<tr class="memdesc:a2c545d270ea567da81427ae480fe2ce1"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a2c545d270ea567da81427ae480fe2ce1" title="MergeFromJPEG() merges standard and extended XMP retrieved from a JPEG file.">MergeFromJPEG()</a></code> merges standard and extended XMP retrieved from a JPEG file.  <a href="classTXMPUtils.html#a2c545d270ea567da81427ae480fe2ce1">More...</a><br /></td></tr>
<tr class="separator:a2c545d270ea567da81427ae480fe2ce1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Editing utilities</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>These functions are useful in implementing a user interface for editing XMP. They </p>
</div></td></tr>
<tr class="memitem:ae86c50953fb549006cf3a64ba1baa160"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#ae86c50953fb549006cf3a64ba1baa160">CatenateArrayItems</a> (const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;xmpObj, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> separator, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> quotes, <a class="el" href="XMP__Const_8h.html#aeb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options, tStringObj *catedStr)</td></tr>
<tr class="memdesc:ae86c50953fb549006cf3a64ba1baa160"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#ae86c50953fb549006cf3a64ba1baa160" title="CatenateArrayItems() creates a single edit string from a set of array item values.">CatenateArrayItems()</a></code> creates a single edit string from a set of array item values.  <a href="classTXMPUtils.html#ae86c50953fb549006cf3a64ba1baa160">More...</a><br /></td></tr>
<tr class="separator:ae86c50953fb549006cf3a64ba1baa160"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a09713a03e5b43462556ca52b8b1301"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a6a09713a03e5b43462556ca52b8b1301">SeparateArrayItems</a> (<a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; *xmpObj, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#aeb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> catedStr)</td></tr>
<tr class="memdesc:a6a09713a03e5b43462556ca52b8b1301"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a6a09713a03e5b43462556ca52b8b1301" title="SeparateArrayItems() updates an array from a concatenated edit string of values.">SeparateArrayItems()</a></code> updates an array from a concatenated edit string of values.  <a href="classTXMPUtils.html#a6a09713a03e5b43462556ca52b8b1301">More...</a><br /></td></tr>
<tr class="separator:a6a09713a03e5b43462556ca52b8b1301"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a48550bbff7417061d791402588fbdb"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a3a48550bbff7417061d791402588fbdb">SeparateArrayItems</a> (<a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; *xmpObj, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#aeb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options, const tStringObj &amp;catedStr)</td></tr>
<tr class="memdesc:a3a48550bbff7417061d791402588fbdb"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a6a09713a03e5b43462556ca52b8b1301" title="SeparateArrayItems() updates an array from a concatenated edit string of values.">SeparateArrayItems()</a></code> updates an array from a concatenated edit string of values.  <a href="classTXMPUtils.html#a3a48550bbff7417061d791402588fbdb">More...</a><br /></td></tr>
<tr class="separator:a3a48550bbff7417061d791402588fbdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26d24376bd47886cf066dc177e29be34"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a26d24376bd47886cf066dc177e29be34">ApplyTemplate</a> (<a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; *workingXMP, const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;templateXMP, <a class="el" href="XMP__Const_8h.html#aeb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> actions)</td></tr>
<tr class="memdesc:a26d24376bd47886cf066dc177e29be34"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#a26d24376bd47886cf066dc177e29be34" title="ApplyTemplate() modifies a working XMP object according to a template object.">ApplyTemplate()</a></code> modifies a working XMP object according to a template object.  <a href="classTXMPUtils.html#a26d24376bd47886cf066dc177e29be34">More...</a><br /></td></tr>
<tr class="separator:a26d24376bd47886cf066dc177e29be34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6cbd2e12768e722315e5ff468ef3729"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#ad6cbd2e12768e722315e5ff468ef3729">RemoveProperties</a> (<a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; *xmpObj, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS=0, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName=0, <a class="el" href="XMP__Const_8h.html#aeb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
<tr class="memdesc:ad6cbd2e12768e722315e5ff468ef3729"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#ad6cbd2e12768e722315e5ff468ef3729" title="RemoveProperties() removes multiple properties from an XMP object.">RemoveProperties()</a></code> removes multiple properties from an XMP object.  <a href="classTXMPUtils.html#ad6cbd2e12768e722315e5ff468ef3729">More...</a><br /></td></tr>
<tr class="separator:ad6cbd2e12768e722315e5ff468ef3729"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6dce0fe1d2765dab14d4ca5e7814f52"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#ae6dce0fe1d2765dab14d4ca5e7814f52">DuplicateSubtree</a> (const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;source, <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; *dest, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> sourceNS, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> sourceRoot, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> destNS=0, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> destRoot=0, <a class="el" href="XMP__Const_8h.html#aeb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
<tr class="memdesc:ae6dce0fe1d2765dab14d4ca5e7814f52"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code><a class="el" href="classTXMPUtils.html#ae6dce0fe1d2765dab14d4ca5e7814f52" title="DuplicateSubtree() replicates a subtree from one XMP object into another.">DuplicateSubtree()</a></code> replicates a subtree from one XMP object into another.  <a href="classTXMPUtils.html#ae6dce0fe1d2765dab14d4ca5e7814f52">More...</a><br /></td></tr>
<tr class="separator:ae6dce0fe1d2765dab14d4ca5e7814f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-methods"></a>
Static Private Member Functions</h2></td></tr>
<tr class="memitem:a89785bcbe5530085002a68b7bfb09384"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html#a89785bcbe5530085002a68b7bfb09384">SetClientString</a> (void *clientPtr, <a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> valuePtr, <a class="el" href="XMP__Const_8h.html#a9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> valueLen)</td></tr>
<tr class="separator:a89785bcbe5530085002a68b7bfb09384"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>API for access to the XMP Toolkit utility services. </p>
<p><code><a class="el" href="classTXMPUtils.html" title="API for access to the XMP Toolkit utility services.">TXMPUtils</a></code> is a template class which must be instantiated with a string class such as <code>std::string</code>. See the instructions in <a class="el" href="XMP_8hpp.html" title="Overall header file for the XMP Toolkit.">XMP.hpp</a>, and the Overview for a discussion of the overall architecture of the XMP API.</p>
<p>This class defines helper functions that support the basic metadata manipulation provided by <code><a class="el" href="classTXMPMeta.html" title="API for access to the XMP Toolkit core services.">TXMPMeta</a></code>. All of the functions are static; that is, you call them directly from the concrete class (<code>SXMPUtils</code>), which is never itself instantiated.</p>
<p>General categories of utilities include:</p>
<ul>
<li>Composing complex path expressions, which you can then pass to the property access functions in <code><a class="el" href="classTXMPMeta.html" title="API for access to the XMP Toolkit core services.">TXMPMeta</a></code> </li>
<li>Converting between binary and string forms of property values </li>
<li>Manipulating date/time values </li>
<li>Encoding and decoding base-64 strings </li>
<li>JPEG file handling </li>
<li>Editing aids for creating a user interface for the XMP Toolkit </li>
</ul>

<p class="definition">Definition at line <a class="el" href="TXMPMeta_8hpp_source.html#l00053">53</a> of file <a class="el" href="TXMPMeta_8hpp_source.html">TXMPMeta.hpp</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a26d24376bd47886cf066dc177e29be34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26d24376bd47886cf066dc177e29be34">&#9670;&nbsp;</a></span>ApplyTemplate()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ApplyTemplate </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; *&#160;</td>
          <td class="paramname"><em>workingXMP</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;&#160;</td>
          <td class="paramname"><em>templateXMP</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#aeb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&#160;</td>
          <td class="paramname"><em>actions</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a26d24376bd47886cf066dc177e29be34" title="ApplyTemplate() modifies a working XMP object according to a template object.">ApplyTemplate()</a></code> modifies a working XMP object according to a template object. </p>
<p>The XMP template can be used to add, replace or delete properties from the working XMP object. This function replaces the previous <code>AppendProperties()</code> function, which is no longer available. The actions that you specify determine how the template is applied. Each action can be applied individually or combined; if you do not specify any actions, the properties and values in the working XMP object do not change.</p>
<p>These actions are available: </p><ul>
<li>Clear (<code><a class="el" href="XMP__Const_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a9dac536fe6ee25de76d45bf6615abd46" title="Perform a Clear operation, keep named properties and delete everything else.">kXMPTemplate_ClearUnnamedProperties</a></code>): Deletes top-level properties. Any top-level property that is present in the template (even with empty value) is retained. All other top-level properties in the working object are deleted.</li>
</ul>
<ul>
<li>Add (<code><a class="el" href="XMP__Const_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a145c259f83048b811c7b35bc3b339c42" title="Perform an Add operation, add properties if they don&#39;t already exist.">kXMPTemplate_AddNewProperties</a></code>): Adds new properties to the working object if the template properties have values. See additional detail below.</li>
</ul>
<ul>
<li>Replace (<code><a class="el" href="XMP__Const_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57aae2e0fe43295736a15f0bb76ffe02544" title="Perform a Replace operation, add new properties and modify existing ones.">kXMPTemplate_ReplaceExistingProperties</a></code>): Replaces the values of existing top-level properties in the working XMP if the value forms match those in the template. Properties with empty values in the template are ignored. If combined with Clear or Add actions, those take precedence; values are cleared or added, rather than replaced.</li>
</ul>
<ul>
<li>Replace/Delete empty (<code><a class="el" href="XMP__Const_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a81e1b6fd067fc9ad62bc803c98701bd5" title="Similar to Replace, also delete if the template has an empty value.">kXMPTemplate_ReplaceWithDeleteEmpty</a></code>): Replaces values in the same way as the simple Replace action, and also deletes properties if the value in the template is empty. If combined with Clear or Add actions, those take precedence; values are cleared or added, rather than replaced.</li>
</ul>
<ul>
<li>Include internal (<code><a class="el" href="XMP__Const_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a872d2b769e775e281984cc63e28714ea" title="Do all properties, default is just external properties.">kXMPTemplate_IncludeInternalProperties</a></code>): Performs specified action <br  />
 on internal properties as well as external properties. By default, internal properties are ignored for all actions.</li>
</ul>
<p>The Add behavior depends on the type of property: </p><ul>
<li>
If a top-level property is not in the working XMP, and has a value in the template, the property and value are added. Empty properties are not added.  </li>
<li>
If a property is in both the working XMP and template, the value forms must match, otherwise the template is ignored for that property. </li>
<li>
If a struct is present in both the working XMP and template, the individual fields of the template struct are added as appropriate; that is, the logic is recursively applied to the fields. Struct values are equivalent if they have the same fields with equivalent values.  </li>
<li>
If an array is present in both the working XMP and template, items from the template are added if the value forms match. Array values match if they have sets of equivalent items, regardless of order. </li>
<li>
Alt-text arrays use the <code>xml:lang</code> qualifier as a key, adding languages that are missing.  </li>
</ul>
<p>Array item checking is n-squared; this can be time-intensive if the Replace option is not specified. Each source item is checked to see if it already exists in the destination, without regard to order or duplicates. Simple items are compared by value and <code>xml:lang</code> qualifier; other qualifiers are ignored. Structs are recursively compared by field names, without regard to field order. Arrays are compared by recursively comparing all items. <br  />
 </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">workingXMP</td><td>The destination XMP object.</td></tr>
    <tr><td class="paramname">templateXMP</td><td>The template to apply to the destination XMP object.</td></tr>
    <tr><td class="paramname">actions</td><td>Option flags to control the copying. If none are specified, the properties and values in the working XMP do not change. A logical OR of these bit-flag constants: <ul>
<li><code><a class="el" href="XMP__Const_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a9dac536fe6ee25de76d45bf6615abd46" title="Perform a Clear operation, keep named properties and delete everything else.">kXMPTemplate_ClearUnnamedProperties</a></code> &ndash; Delete anything that is not in the template </li>
<li><code><a class="el" href="XMP__Const_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a145c259f83048b811c7b35bc3b339c42" title="Perform an Add operation, add properties if they don&#39;t already exist.">kXMPTemplate_AddNewProperties</a></code> &ndash; Add properties; see detailed description. </li>
<li><code><a class="el" href="XMP__Const_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57aae2e0fe43295736a15f0bb76ffe02544" title="Perform a Replace operation, add new properties and modify existing ones.">kXMPTemplate_ReplaceExistingProperties</a></code> &ndash; Replace the values of existing properties. </li>
<li><code><a class="el" href="XMP__Const_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a81e1b6fd067fc9ad62bc803c98701bd5" title="Similar to Replace, also delete if the template has an empty value.">kXMPTemplate_ReplaceWithDeleteEmpty</a></code> &ndash; Replace the values of existing properties and delete properties if the new value is empty. </li>
<li><code><a class="el" href="XMP__Const_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a872d2b769e775e281984cc63e28714ea" title="Do all properties, default is just external properties.">kXMPTemplate_IncludeInternalProperties</a></code> &ndash; Operate on internal properties as well as external properties. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ae86c50953fb549006cf3a64ba1baa160"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae86c50953fb549006cf3a64ba1baa160">&#9670;&nbsp;</a></span>CatenateArrayItems()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::CatenateArrayItems </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;&#160;</td>
          <td class="paramname"><em>xmpObj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>schemaNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>arrayName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>separator</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>quotes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#aeb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&#160;</td>
          <td class="paramname"><em>options</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>catedStr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#ae86c50953fb549006cf3a64ba1baa160" title="CatenateArrayItems() creates a single edit string from a set of array item values.">CatenateArrayItems()</a></code> creates a single edit string from a set of array item values. </p>
<p>convert sets of property values to and from displayable and manipulable strings, and perform operations on sets of metadata, such as those available from the File Info dialog box. Collects the values of all items in an array into a single string, using a specified separation string. Each item in the specified array must be a simple string value.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">xmpObj</td><td>The XMP object containing the array to be catenated.</td></tr>
    <tr><td class="paramname">schemaNS</td><td>The schema namespace URI for the array. Must not be null or the empty string.</td></tr>
    <tr><td class="paramname">arrayName</td><td>The name of the array. May be a general path expression, must not be null or the empty string.</td></tr>
    <tr><td class="paramname">separator</td><td>The string with which to separate the items in the catenated string. Defaults to "; ", ASCII semicolon and space (U+003B, U+0020).</td></tr>
    <tr><td class="paramname">quotes</td><td>The character or characters to use as quotes around array items that contain a separator. Defaults to the double-quote character ("), ASCII quote (U+0022).</td></tr>
    <tr><td class="paramname">options</td><td>Option flags to control the catenation. &lt;&lt;what options?&gt;&gt;</td></tr>
    <tr><td class="paramname">catedStr</td><td>[out] A string object in which to return the catenated array items.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="classTXMPUtils.html#a6a09713a03e5b43462556ca52b8b1301" title="SeparateArrayItems() updates an array from a concatenated edit string of values.">SeparateArrayItems()</a></code> </dd></dl>

</div>
</div>
<a id="a1a963cf8e8c098234d92547fa828b1c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a963cf8e8c098234d92547fa828b1c8">&#9670;&nbsp;</a></span>CompareDateTime()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static int TXMPUtils::CompareDateTime </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> &amp;&#160;</td>
          <td class="paramname"><em>left</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> &amp;&#160;</td>
          <td class="paramname"><em>right</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a1a963cf8e8c098234d92547fa828b1c8" title="CompareDateTime() compares the order of two date/time values.">CompareDateTime()</a></code> compares the order of two date/time values. </p>
<p>Both values are treated as in the same time zone if either has no time zone.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">left</td><td>The left-side date/time value.</td></tr>
    <tr><td class="paramname">right</td><td>The right-side date/time value.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An integer indicating the order: <ul>
<li>-1 if left is earlier than right </li>
<li>0 if left matches right </li>
<li>+1 if left is later than right </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a24c181aa8e80b215675d76b74631985e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24c181aa8e80b215675d76b74631985e">&#9670;&nbsp;</a></span>ComposeArrayItemPath()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ComposeArrayItemPath </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>schemaNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>arrayName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#a00e9d9a76c144421105a4c2742203315">XMP_Index</a>&#160;</td>
          <td class="paramname"><em>itemIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>fullPath</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a24c181aa8e80b215675d76b74631985e" title="ComposeArrayItemPath() composes the path expression for an item in an array.">ComposeArrayItemPath()</a></code> composes the path expression for an item in an array. </p>
<p>struct fields so that you can use the binary accessors such as <code><a class="el" href="classTXMPMeta.html#a6ac3fc9bcaa0e6328df83ea2a4a685ed" title="GetProperty_Int() retrieves the value of an integer property as a C long integer.">TXMPMeta::GetProperty_Int()</a></code>. You can use these functions is to compose a complete path expression, or all but the last component. For example, suppose you have a property that is an array of integers within a struct. You can access one of the array items like this:</p>
<pre>
  SXMPUtils::ComposeStructFieldPath ( schemaNS, "Struct", fieldNS, "Array", &amp;path );
  SXMPUtils::ComposeArrayItemPath ( schemaNS, path, index, &amp;path );
  exists = xmpObj.GetProperty_Int ( schemaNS, path, &amp;value, &amp;options );
</pre><p>You could also use this code if you want the string form of the integer:</p>
<pre>
  SXMPUtils::ComposeStructFieldPath ( schemaNS, "Struct", fieldNS, "Array", &amp;path );
  xmpObj.GetArrayItem ( schemaNS, path, index, &amp;value, &amp;options );
</pre><dl class="section note"><dt>Note</dt><dd>It might look confusing that the <code>schemaNS</code> is passed in all of the calls above. This is because the XMP Toolkit keeps the top-level "schema" namespace separate from the rest of the path expression. The returned string is in the form <code>ns:arrayName[i]</code>, where "ns" is the prefix for the specified namespace, and "i" is the decimal representation of specified item index. If the last item was specified, the path is <code>ns:arrayName[last()]</code>.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">schemaNS</td><td>The namespace URI for the array; see <code>GetProperty()</code>.</td></tr>
    <tr><td class="paramname">arrayName</td><td>The name of the array. Can be a general path expression, must not be null or the empty string; see <code>GetProperty()</code> for namespace prefix usage.</td></tr>
    <tr><td class="paramname">itemIndex</td><td>The 1-based index of the desired item. Use the macro <code><a class="el" href="XMP__Const_8h.html#a9549b9a138a896257b5a70176d125317" title="Options macro accesses last array item.">kXMP_ArrayLastItem</a></code> to specify the last existing array item.</td></tr>
    <tr><td class="paramname">fullPath</td><td>[out] A string in which to return the composed path. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a462c2fd217b5a573c80427656368aeb7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a462c2fd217b5a573c80427656368aeb7">&#9670;&nbsp;</a></span>ComposeFieldSelector() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ComposeFieldSelector </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>schemaNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>arrayName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>fieldNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>fieldName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const tStringObj &amp;&#160;</td>
          <td class="paramname"><em>fieldValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>fullPath</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#ac170c536e7b4be4da27eca9660889726" title="ComposeFieldSelector() composes a path expression to select an alternate item by a field&#39;s value.">ComposeFieldSelector()</a></code> composes a path expression to select an alternate item by a field's value. </p>
<p>Path syntax allows two forms of "content addressing" to select an item in an array of alternatives. The form used in this function lets you select an item in an array of structs based on the value of one of the fields in the structs. The other form of content addressing is shown in <code><a class="el" href="classTXMPUtils.html#aecea12ca2bcd86b71569b87fa3a187eb" title="ComposeLangSelector() composes the path expression to select an alternate item by language.">ComposeLangSelector()</a></code>.</p>
<p>For example, consider a simple struct that has two fields, the name of a city and the URI of an FTP site in that city. Use this to create an array of download alternatives. You can show the user a popup built from the values of the city fields, then get the corresponding URI as follows: </p><pre>
  ComposeFieldSelector ( schemaNS, "Downloads", fieldNS, "City", chosenCity, &amp;path );
  exists = GetStructField ( schemaNS, path, fieldNS, "URI", &amp;uri );
</pre><p>The returned string is in the form <code>ns:arrayName[fNS:fieldName='fieldValue']</code>, where "ns" is the prefix for the schema namespace and "fNS" is the prefix for the field namespace.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">schemaNS</td><td>The namespace URI for the array; see <code>GetProperty()</code>.</td></tr>
    <tr><td class="paramname">arrayName</td><td>The name of the array. Can be a general path expression, must not be null or the empty string; see <code>GetProperty()</code> for namespace prefix usage.</td></tr>
    <tr><td class="paramname">fieldNS</td><td>The namespace URI for the field used as the selector. Same URI and prefix usage as the <code>schemaNS</code> and <code>arrayName</code> parameters.</td></tr>
    <tr><td class="paramname">fieldName</td><td>The name of the field used as the selector. Must be a single XML name, must not be null or the empty string. It must be the name of a field that is itself simple.</td></tr>
    <tr><td class="paramname">fieldValue</td><td>The desired value of the field, specified as a string object.</td></tr>
    <tr><td class="paramname">fullPath</td><td>[out] A string in which to return the composed path. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ac170c536e7b4be4da27eca9660889726"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac170c536e7b4be4da27eca9660889726">&#9670;&nbsp;</a></span>ComposeFieldSelector() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ComposeFieldSelector </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>schemaNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>arrayName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>fieldNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>fieldName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>fieldValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>fullPath</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#ac170c536e7b4be4da27eca9660889726" title="ComposeFieldSelector() composes a path expression to select an alternate item by a field&#39;s value.">ComposeFieldSelector()</a></code> composes a path expression to select an alternate item by a field's value. </p>
<p>Path syntax allows two forms of "content addressing" to select an item in an array of alternatives. The form used in this function lets you select an item in an array of structs based on the value of one of the fields in the structs. The other form of content addressing is shown in <code><a class="el" href="classTXMPUtils.html#aecea12ca2bcd86b71569b87fa3a187eb" title="ComposeLangSelector() composes the path expression to select an alternate item by language.">ComposeLangSelector()</a></code>.</p>
<p>For example, consider a simple struct that has two fields, the name of a city and the URI of an FTP site in that city. Use this to create an array of download alternatives. You can show the user a popup built from the values of the city fields, then get the corresponding URI as follows: </p><pre>
  ComposeFieldSelector ( schemaNS, "Downloads", fieldNS, "City", chosenCity, &amp;path );
  exists = GetStructField ( schemaNS, path, fieldNS, "URI", &amp;uri );
</pre><p>The returned string is in the form <code>ns:arrayName[fNS:fieldName='fieldValue']</code>, where "ns" is the prefix for the schema namespace and "fNS" is the prefix for the field namespace.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">schemaNS</td><td>The namespace URI for the array; see <code>GetProperty()</code>.</td></tr>
    <tr><td class="paramname">arrayName</td><td>The name of the array. Can be a general path expression, must not be null or the empty string; see <code>GetProperty()</code> for namespace prefix usage.</td></tr>
    <tr><td class="paramname">fieldNS</td><td>The namespace URI for the field used as the selector. Same URI and prefix usage as the <code>schemaNS</code> and <code>arrayName</code> parameters.</td></tr>
    <tr><td class="paramname">fieldName</td><td>The name of the field used as the selector. Must be a single XML name, must not be null or the empty string. It must be the name of a field that is itself simple.</td></tr>
    <tr><td class="paramname">fieldValue</td><td>The desired value of the field, specified as a null-terminated UTF-8 string.</td></tr>
    <tr><td class="paramname">fullPath</td><td>[out] A string in which to return the composed path. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a02ebf2df1df0c8ff914a0abed9e01d8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02ebf2df1df0c8ff914a0abed9e01d8d">&#9670;&nbsp;</a></span>ComposeLangSelector() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ComposeLangSelector </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>schemaNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>arrayName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const tStringObj &amp;&#160;</td>
          <td class="paramname"><em>langName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>fullPath</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#aecea12ca2bcd86b71569b87fa3a187eb" title="ComposeLangSelector() composes the path expression to select an alternate item by language.">ComposeLangSelector()</a></code> composes a path expression to select an alternate item by language. </p>
<p>Path syntax allows two forms of "content addressing" to select an item in an array of alternatives. The form used in this function lets you select an item in an alt-text array based on the value of its <code>xml:lang</code> qualifier. The other form of content addressing is shown in <code><a class="el" href="classTXMPUtils.html#ac170c536e7b4be4da27eca9660889726" title="ComposeFieldSelector() composes a path expression to select an alternate item by a field&#39;s value.">ComposeFieldSelector()</a></code>.</p>
<p>The returned string is in the form <code>ns:arrayName[@xml:lang='langName']</code>, where "ns" is the prefix for the schema namespace</p>
<p>This function provides a path expression that is explicitly and only for a specific language. In most cases, <code><a class="el" href="classTXMPMeta.html#af9531b949a462f5663b1f3fd99464c19" title="SetLocalizedText() modifies the value of a selected item in an alt-text array.">TXMPMeta::SetLocalizedText()</a></code> and <code><a class="el" href="classTXMPMeta.html#a861fae05ce493289bf6f92ca81b3a4d6" title="GetLocalizedText() retrieves information about a selected item in an alt-text array.">TXMPMeta::GetLocalizedText()</a></code> are preferred, because they provide extra logic to choose the appropriate language and maintain consistency with the 'x-default' value.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">schemaNS</td><td>The namespace URI for the array; see <code>GetProperty()</code>.</td></tr>
    <tr><td class="paramname">arrayName</td><td>The name of the array. Can be a general path expression, must not be null or the empty string; see <code>GetProperty()</code> for namespace prefix usage.</td></tr>
    <tr><td class="paramname">langName</td><td>The RFC 3066 code for the desired language, as a string object.</td></tr>
    <tr><td class="paramname">fullPath</td><td>[out] A string in which to return the composed path. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="aecea12ca2bcd86b71569b87fa3a187eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aecea12ca2bcd86b71569b87fa3a187eb">&#9670;&nbsp;</a></span>ComposeLangSelector() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ComposeLangSelector </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>schemaNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>arrayName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>langName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>fullPath</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#aecea12ca2bcd86b71569b87fa3a187eb" title="ComposeLangSelector() composes the path expression to select an alternate item by language.">ComposeLangSelector()</a></code> composes the path expression to select an alternate item by language. </p>
<p>Path syntax allows two forms of "content addressing" to select an item in an array of alternatives. The form used in this function lets you select an item in an alt-text array based on the value of its <code>xml:lang</code> qualifier. The other form of content addressing is shown in <code><a class="el" href="classTXMPUtils.html#ac170c536e7b4be4da27eca9660889726" title="ComposeFieldSelector() composes a path expression to select an alternate item by a field&#39;s value.">ComposeFieldSelector()</a></code>.</p>
<p>The returned string is in the form <code>ns:arrayName[@xml:lang='langName']</code>, where "ns" is the prefix for the schema namespace</p>
<p>This function provides a path expression that is explicitly and only for a specific language. In most cases, <code><a class="el" href="classTXMPMeta.html#af9531b949a462f5663b1f3fd99464c19" title="SetLocalizedText() modifies the value of a selected item in an alt-text array.">TXMPMeta::SetLocalizedText()</a></code> and <code><a class="el" href="classTXMPMeta.html#a861fae05ce493289bf6f92ca81b3a4d6" title="GetLocalizedText() retrieves information about a selected item in an alt-text array.">TXMPMeta::GetLocalizedText()</a></code> are preferred, because they provide extra logic to choose the appropriate language and maintain consistency with the 'x-default' value.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">schemaNS</td><td>The namespace URI for the array; see <code>GetProperty()</code>.</td></tr>
    <tr><td class="paramname">arrayName</td><td>The name of the array. Can be a general path expression, must not be null or the empty string; see <code>GetProperty()</code> for namespace prefix usage.</td></tr>
    <tr><td class="paramname">langName</td><td>The RFC 3066 code for the desired language, as a null-terminated UTF-8 string.</td></tr>
    <tr><td class="paramname">fullPath</td><td>[out] A string in which to return the composed path. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a944bebd0b19467a988a02c6b642b2810"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a944bebd0b19467a988a02c6b642b2810">&#9670;&nbsp;</a></span>ComposeQualifierPath()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ComposeQualifierPath </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>schemaNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>propName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>qualNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>qualName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>fullPath</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a944bebd0b19467a988a02c6b642b2810" title="ComposeQualifierPath() composes the path expression for a qualifier.">ComposeQualifierPath()</a></code> composes the path expression for a qualifier. </p>
<p>The returned string is in the form <code>ns:propName/?qNS:qualName</code>, where "ns" is the prefix for the schema namespace, and "qNS" is the prefix for the qualifier namespace.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">schemaNS</td><td>The namespace URI; see <code>GetProperty()</code>.</td></tr>
    <tr><td class="paramname">propName</td><td>The name of the property to which the qualifier is attached. Can be a general path expression, must not be null or the empty string; see <code>GetProperty()</code> for namespace prefix usage.</td></tr>
    <tr><td class="paramname">qualNS</td><td>The namespace URI for the qualifier. Same URI and prefix usage as the <code>schemaNS</code> and <code>propName</code> parameters.</td></tr>
    <tr><td class="paramname">qualName</td><td>The name of the qualifier. Must be a single XML name, must not be null or the empty string. Same URI and prefix usage as the <code>schemaNS</code> and <code>propName</code> parameters.</td></tr>
    <tr><td class="paramname">fullPath</td><td>[out] A string in which to return the composed path. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a44cc195054f1a28e102b6745daa6c905"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44cc195054f1a28e102b6745daa6c905">&#9670;&nbsp;</a></span>ComposeStructFieldPath()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ComposeStructFieldPath </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>schemaNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>structName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>fieldNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>fieldName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>fullPath</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a44cc195054f1a28e102b6745daa6c905" title="ComposeStructFieldPath() composes the path expression for a field in a struct.">ComposeStructFieldPath()</a></code> composes the path expression for a field in a struct. </p>
<p>The returned string is in the form <code>ns:structName/fNS:fieldName</code>, where "ns" is the prefix for the schema namespace, and "fNS" is the prefix for field namespace.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">schemaNS</td><td>The namespace URI for the struct; see <code>GetProperty()</code>.</td></tr>
    <tr><td class="paramname">structName</td><td>The name of the struct. Can be a general path expression, must not be null or the empty string; see <code>GetProperty()</code> for namespace prefix usage.</td></tr>
    <tr><td class="paramname">fieldNS</td><td>The namespace URI for the field. Same URI and prefix usage as the <code>schemaNS</code> and <code>structName</code> parameters.</td></tr>
    <tr><td class="paramname">fieldName</td><td>The name of the field. Must be a single XML name, must not be null or the empty string. Same URI and prefix usage as the <code>schemaNS</code> and <code>structName</code> parameters.</td></tr>
    <tr><td class="paramname">fullPath</td><td>[out] A string in which to return the composed path. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="aac7c8b47aea7bcb70f102ce94d4e9dfb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac7c8b47aea7bcb70f102ce94d4e9dfb">&#9670;&nbsp;</a></span>ConvertFromBool()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ConvertFromBool </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>binValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>strValue</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#aac7c8b47aea7bcb70f102ce94d4e9dfb" title="ConvertFromBool() converts a Boolean value to a string.">ConvertFromBool()</a></code> converts a Boolean value to a string. </p>
<p>The main accessors in <code><a class="el" href="classTXMPMeta.html" title="API for access to the XMP Toolkit core services.">TXMPMeta</a></code> set and retrieve property values as strings. additional functions, such as <code>TXMPMeta::SetPropertyInt()</code>, set and retrieve property values as explicit binary data types. Use these functions to convert between binary and string values.</p>
<p>Strings can be specified as null-terminated UTF-8 (<code><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6" title="The type for input string parameters. A const char *, a null-terminated UTF-8 string.">XMP_StringPtr</a></code>), or as string objects (<code>tStringObj</code>) of the type declared when instantiating the XMP classes; see <code><a class="el" href="XMP_8hpp.html" title="Overall header file for the XMP Toolkit.">XMP.hpp</a></code>. Alternate forms of each conversion function allow either type of string. The string values of Booleans are returned by the macros <code><a class="el" href="XMP__Const_8h.html#a4c39e0131b0e3d7db66e1cfa82b67141" title="The canonical true string value for Booleans in serialized XMP.">kXMP_TrueStr</a></code> and <code><a class="el" href="XMP__Const_8h.html#a2dc55b533ed63ed7ff0c3be16a97e278" title="The canonical false string value for Booleans in serialized XMP.">kXMP_FalseStr</a></code> in <code><a class="el" href="XMP__Const_8h.html" title="Common C/C++ types and constants for the XMP toolkit.">XMP_Const.h</a></code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">binValue</td><td>The Boolean value to be converted.</td></tr>
    <tr><td class="paramname">strValue</td><td>[out] A buffer in which to return the string representation of the value. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a56f5b39382a924d77db2037bc6ac8360"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56f5b39382a924d77db2037bc6ac8360">&#9670;&nbsp;</a></span>ConvertFromDate()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ConvertFromDate </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> &amp;&#160;</td>
          <td class="paramname"><em>binValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>strValue</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a56f5b39382a924d77db2037bc6ac8360" title="ConvertFromDate() converts a date/time value to a string.">ConvertFromDate()</a></code> converts a date/time value to a string. </p>
<p>Formats a date according to the ISO 8601 profile in <a href="http://www.w3.org/TR/NOTE-datetime:">http://www.w3.org/TR/NOTE-datetime:</a> </p><pre>
  YYYY
  YYYY-MM
  YYYY-MM-DD
  YYYY-MM-DDThh:mmTZD
  YYYY-MM-DDThh:mm:ssTZD
  YYYY-MM-DDThh:mm:ss.sTZD
</pre><p><code>YYYY</code> = four-digit year, formatted as "%.4d" <br  />
 <code>MM</code> = two-digit month (01=January) <br  />
 <code>DD</code> = two-digit day of month (01 through 31) <br  />
 <code>hh</code> = two digits of hour (00 through 23) <br  />
 <code>mm</code> = two digits of minute (00 through 59) <br  />
 <code>ss</code> = two digits of second (00 through 59) <br  />
 <code>s</code> = one or more digits representing a decimal fraction of a second <br  />
 <code>TZD</code> = time zone designator (Z or +hh:mm or -hh:mm)</p>
<p>Time-only input is allowed where the year, month, and day are all zero. This is output as "0000-00-00...".</p>
<dl class="section note"><dt>Note</dt><dd>ISO 8601 does not allow years less than 1000 or greater than 9999. This API allows any year, even negative ones. The W3C profile also requires a time zone designator if a time is present, this API treats the time zone designator as optional. The <a class="el" href="structXMP__DateTime.html" title="The expanded type for a date and time.">XMP_DateTime</a> type has an explicit notion of zone-less time.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">binValue</td><td>The date/time value to be converted.</td></tr>
    <tr><td class="paramname">strValue</td><td>[out] A buffer in which to return the ISO 8601 string representation of the date/time. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a901418649be0957cc0b6974f14ec6952"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a901418649be0957cc0b6974f14ec6952">&#9670;&nbsp;</a></span>ConvertFromFloat()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ConvertFromFloat </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>binValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>strValue</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a901418649be0957cc0b6974f14ec6952" title="ConvertFromFloat() converts a floating-point value to a string.">ConvertFromFloat()</a></code> converts a floating-point value to a string. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">binValue</td><td>The floating-point value to be converted.</td></tr>
    <tr><td class="paramname">format</td><td>Optional. A C <code>sprintf</code> format for the conversion. Default is "%d".</td></tr>
    <tr><td class="paramname">strValue</td><td>[out] A buffer in which to return the string representation of the value. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a9aeba82d4e026d3fe41a1d17a12138c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9aeba82d4e026d3fe41a1d17a12138c1">&#9670;&nbsp;</a></span>ConvertFromInt()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ConvertFromInt </td>
          <td>(</td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>binValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>strValue</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a9aeba82d4e026d3fe41a1d17a12138c1" title="ConvertFromInt() converts a 32-bit integer value to a string.">ConvertFromInt()</a></code> converts a 32-bit integer value to a string. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">binValue</td><td>The integer value to be converted.</td></tr>
    <tr><td class="paramname">format</td><td>Optional. A C <code>sprintf</code> format for the conversion. Default is "%d".</td></tr>
    <tr><td class="paramname">strValue</td><td>[out] A buffer in which to return the string representation of the value. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a55121e042306ef76833a00f782d4a726"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a55121e042306ef76833a00f782d4a726">&#9670;&nbsp;</a></span>ConvertFromInt64()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ConvertFromInt64 </td>
          <td>(</td>
          <td class="paramtype">long long&#160;</td>
          <td class="paramname"><em>binValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>strValue</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a55121e042306ef76833a00f782d4a726" title="ConvertFromInt64() converts a 64-bit integer value to a string.">ConvertFromInt64()</a></code> converts a 64-bit integer value to a string. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">binValue</td><td>The integer value to be converted.</td></tr>
    <tr><td class="paramname">format</td><td>Optional. A C <code>sprintf</code> format for the conversion. Default is "%d".</td></tr>
    <tr><td class="paramname">strValue</td><td>[out] A buffer in which to return the string representation of the value. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ab0a08cd71bb77e83cd3282220f75cb00"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0a08cd71bb77e83cd3282220f75cb00">&#9670;&nbsp;</a></span>ConvertToBool() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static bool TXMPUtils::ConvertToBool </td>
          <td>(</td>
          <td class="paramtype">const tStringObj &amp;&#160;</td>
          <td class="paramname"><em>strValue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a06a2373bdd4c0bee2d9186354dcc857f" title="ConvertToBool() converts a string to a Boolean value.">ConvertToBool()</a></code> converts a string to a Boolean value. </p>
<p>Overloads the basic form of the function, allowing you to pass a string object, rather than a <code>const * char</code>. It is otherwise identical; see details in the canonical form. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">strValue</td><td>The string representation of the value, specified as a string object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The appropriate C++ bool value for the string. </dd></dl>

</div>
</div>
<a id="a06a2373bdd4c0bee2d9186354dcc857f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a06a2373bdd4c0bee2d9186354dcc857f">&#9670;&nbsp;</a></span>ConvertToBool() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static bool TXMPUtils::ConvertToBool </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>strValue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a06a2373bdd4c0bee2d9186354dcc857f" title="ConvertToBool() converts a string to a Boolean value.">ConvertToBool()</a></code> converts a string to a Boolean value. </p>
<p>The preferred strings are those returned by the macros <code><a class="el" href="XMP__Const_8h.html#a4c39e0131b0e3d7db66e1cfa82b67141" title="The canonical true string value for Booleans in serialized XMP.">kXMP_TrueStr</a></code> and <code><a class="el" href="XMP__Const_8h.html#a2dc55b533ed63ed7ff0c3be16a97e278" title="The canonical false string value for Booleans in serialized XMP.">kXMP_FalseStr</a></code>. If these do not match, the function does a case insensitive comparison, then simply 't' or 'f', and finally non-zero and zero integer representations.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">strValue</td><td>The string representation of the value, specified as a null-terminated UTF-8 string.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The appropriate C++ bool value for the string. </dd></dl>

</div>
</div>
<a id="aafa9a5bfaf83f394870e903424855c24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aafa9a5bfaf83f394870e903424855c24">&#9670;&nbsp;</a></span>ConvertToDate() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ConvertToDate </td>
          <td>(</td>
          <td class="paramtype">const tStringObj &amp;&#160;</td>
          <td class="paramname"><em>strValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> *&#160;</td>
          <td class="paramname"><em>binValue</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a73e684233b13ff7b2181eb176616e763" title="ConvertToDate() converts a string to a date/time value.">ConvertToDate()</a></code> converts a string to a date/time value. </p>
<p>Overloads the basic form of the function, allowing you to pass a string object, rather than a <code>const * char</code>. It is otherwise identical. See details for the canonical form. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">strValue</td><td>The ISO 8601 string representation of the date/time, specified as a string object.</td></tr>
    <tr><td class="paramname">binValue</td><td>[out] A buffer in which to return the binary date/time value. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a73e684233b13ff7b2181eb176616e763"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73e684233b13ff7b2181eb176616e763">&#9670;&nbsp;</a></span>ConvertToDate() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ConvertToDate </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>strValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> *&#160;</td>
          <td class="paramname"><em>binValue</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a73e684233b13ff7b2181eb176616e763" title="ConvertToDate() converts a string to a date/time value.">ConvertToDate()</a></code> converts a string to a date/time value. </p>
<p>Parses a date according to the ISO 8601 profile in <a href="http://www.w3.org/TR/NOTE-datetime:">http://www.w3.org/TR/NOTE-datetime:</a> </p><pre>
  YYYY
  YYYY-MM
  YYYY-MM-DD
  YYYY-MM-DDThh:mmTZD
  YYYY-MM-DDThh:mm:ssTZD
  YYYY-MM-DDThh:mm:ss.sTZD
</pre><p><code>YYYY</code> = four-digit year, formatted as "%.4d" <br  />
 <code>MM</code> = two-digit month (01=January) <br  />
 <code>DD</code> = two-digit day of month (01 through 31) <br  />
 <code>hh</code> = two digits of hour (00 through 23) <br  />
 <code>mm</code> = two digits of minute (00 through 59) <br  />
 <code>ss</code> = two digits of second (00 through 59) <br  />
 <code>s</code> = one or more digits representing a decimal fraction of a second <br  />
 <code>TZD</code> = time zone designator (Z or +hh:mm or -hh:mm)</p>
<p>A missing date portion or missing TZD are tolerated. A missing date value can begin with "Thh:" or "hh:"; the year, month, and day are all set to zero in the <code><a class="el" href="structXMP__DateTime.html" title="The expanded type for a date and time.">XMP_DateTime</a></code> value. A missing TZD is assumed to be UTC.</p>
<dl class="section note"><dt>Note</dt><dd>ISO 8601 does not allow years less than 1000 or greater than 9999. This API allows any year, even negative ones. The W3C profile also requires a time zone designator if a time is present, this API treats the time zone designator as optional. The <a class="el" href="structXMP__DateTime.html" title="The expanded type for a date and time.">XMP_DateTime</a> type has an explicit notion of zone-less time.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">strValue</td><td>The ISO 8601 string representation of the date/time, specified as a null-terminated UTF-8 string.</td></tr>
    <tr><td class="paramname">binValue</td><td>[out] A buffer in which to return the binary date/time value. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a02d41b6bbc3698cc67d496984ab3f13e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02d41b6bbc3698cc67d496984ab3f13e">&#9670;&nbsp;</a></span>ConvertToFloat() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static double TXMPUtils::ConvertToFloat </td>
          <td>(</td>
          <td class="paramtype">const tStringObj &amp;&#160;</td>
          <td class="paramname"><em>strValue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#ae31127683540d7c2b6c246a8d1060f87" title="ConvertToFloat() converts a string to a floating-point value.">ConvertToFloat()</a></code> converts a string to a floating-point value. </p>
<p>Overloads the basic form of the function, allowing you to pass a string object, rather than a <code>const * char</code>. It is otherwise identical. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">strValue</td><td>The string representation of the value, specified as a string object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The floating-point value. </dd></dl>

</div>
</div>
<a id="ae31127683540d7c2b6c246a8d1060f87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae31127683540d7c2b6c246a8d1060f87">&#9670;&nbsp;</a></span>ConvertToFloat() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static double TXMPUtils::ConvertToFloat </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>strValue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#ae31127683540d7c2b6c246a8d1060f87" title="ConvertToFloat() converts a string to a floating-point value.">ConvertToFloat()</a></code> converts a string to a floating-point value. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">strValue</td><td>The string representation of the value, specified as a null-terminated UTF-8 string.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The floating-point value. </dd></dl>

</div>
</div>
<a id="a805172007015c0ffe11c6be5b124dfba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a805172007015c0ffe11c6be5b124dfba">&#9670;&nbsp;</a></span>ConvertToInt() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static long TXMPUtils::ConvertToInt </td>
          <td>(</td>
          <td class="paramtype">const tStringObj &amp;&#160;</td>
          <td class="paramname"><em>strValue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a807f3506cd34f00da51b0b9303de3dca" title="ConvertToInt() converts a string to a 32-bit integer value.">ConvertToInt()</a></code> converts a string to a 32-bit integer value. </p>
<p>Overloads the basic form of the function, allowing you to pass a string object, rather than a <code>const * char</code>. It is otherwise identical. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">strValue</td><td>The string representation of the value, specified as a string object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The 32-bit integer value. </dd></dl>

</div>
</div>
<a id="a807f3506cd34f00da51b0b9303de3dca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a807f3506cd34f00da51b0b9303de3dca">&#9670;&nbsp;</a></span>ConvertToInt() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static long TXMPUtils::ConvertToInt </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>strValue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a807f3506cd34f00da51b0b9303de3dca" title="ConvertToInt() converts a string to a 32-bit integer value.">ConvertToInt()</a></code> converts a string to a 32-bit integer value. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">strValue</td><td>The string representation of the value, specified as a null-terminated UTF-8 string.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The 32-bit integer value. </dd></dl>

</div>
</div>
<a id="a9c8eafe42c3386f4daee1a67b6b2fbdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c8eafe42c3386f4daee1a67b6b2fbdb">&#9670;&nbsp;</a></span>ConvertToInt64() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static long long TXMPUtils::ConvertToInt64 </td>
          <td>(</td>
          <td class="paramtype">const tStringObj &amp;&#160;</td>
          <td class="paramname"><em>strValue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a2ac012128453865dce762e65342e6cee" title="ConvertToInt64() converts a string to a 64-bit integer value.">ConvertToInt64()</a></code> converts a string to a 64-bit integer value. </p>
<p>Overloads the basic form of the function, allowing you to pass a string object, rather than a <code>const * char</code>. It is otherwise identical. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">strValue</td><td>The string representation of the value, specified as a string object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The 64-bit integer value. </dd></dl>

</div>
</div>
<a id="a2ac012128453865dce762e65342e6cee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ac012128453865dce762e65342e6cee">&#9670;&nbsp;</a></span>ConvertToInt64() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static long long TXMPUtils::ConvertToInt64 </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>strValue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a2ac012128453865dce762e65342e6cee" title="ConvertToInt64() converts a string to a 64-bit integer value.">ConvertToInt64()</a></code> converts a string to a 64-bit integer value. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">strValue</td><td>The string representation of the value, specified as a null-terminated UTF-8 string.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The 64-bit integer value. </dd></dl>

</div>
</div>
<a id="a56552bb9a82a5dfc64b5630fa571876a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56552bb9a82a5dfc64b5630fa571876a">&#9670;&nbsp;</a></span>ConvertToLocalTime()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ConvertToLocalTime </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> *&#160;</td>
          <td class="paramname"><em>time</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a56552bb9a82a5dfc64b5630fa571876a" title="ConvertToLocalTime() ensures that a time is local.">ConvertToLocalTime()</a></code> ensures that a time is local. </p>
<p>If the time zone is not the local zone, the time is adjusted and the time zone set to be local. The value is not modified if the time zone is already the local zone or if the value has no time zone.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">time</td><td>A pointer to the date-time value, which is modified in place. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a57d6c93a72455930040979e4d3498c1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57d6c93a72455930040979e4d3498c1b">&#9670;&nbsp;</a></span>ConvertToUTCTime()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::ConvertToUTCTime </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> *&#160;</td>
          <td class="paramname"><em>time</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a57d6c93a72455930040979e4d3498c1b" title="ConvertToUTCTime() ensures that a time is UTC.">ConvertToUTCTime()</a></code> ensures that a time is UTC. </p>
<p>If the time zone is not UTC, the time is adjusted and the time zone set to be UTC. The value is not modified if the time zone is already UTC or if the value has no time zone.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">time</td><td>A pointer to the date-time value, which is modified in place. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a749581f90883b8aa051e216c7bf57e3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a749581f90883b8aa051e216c7bf57e3c">&#9670;&nbsp;</a></span>CurrentDateTime()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::CurrentDateTime </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> *&#160;</td>
          <td class="paramname"><em>time</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a749581f90883b8aa051e216c7bf57e3c" title="CurrentDateTime() obtains the current date and time.">CurrentDateTime()</a></code> obtains the current date and time. </p>
<p>In addition to the type-conversion functions that convert between strings and binary date-time values, these functions create, manipulate, and compare date-time values. Creates and returns a binary <code><a class="el" href="structXMP__DateTime.html" title="The expanded type for a date and time.">XMP_DateTime</a></code> value. The returned time is UTC, properly adjusted for the local time zone. The resolution of the time is not guaranteed to be finer than seconds.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">time</td><td>[out] A buffer in which to return the date/time value. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="aabfee82ff284672720fc8ffdc0a76432"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aabfee82ff284672720fc8ffdc0a76432">&#9670;&nbsp;</a></span>DecodeFromBase64() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::DecodeFromBase64 </td>
          <td>(</td>
          <td class="paramtype">const tStringObj &amp;&#160;</td>
          <td class="paramname"><em>encodedStr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>rawStr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#ad2c573d4f1aaa30f60d82eadce4b1929" title="DecodeFromBase64() Decodes a Base64-encoded string to raw data.">DecodeFromBase64()</a></code> Decodes a Base64-encoded string, passed as a string object, to raw data. </p>
<p>Overloads the basic form of the function, allowing you to pass a string object as input. It is otherwise identical. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">encodedStr</td><td>An string object containing the encoded data to be converted.</td></tr>
    <tr><td class="paramname">rawStr</td><td>[out] A string object in which to return the decoded data. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ad2c573d4f1aaa30f60d82eadce4b1929"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2c573d4f1aaa30f60d82eadce4b1929">&#9670;&nbsp;</a></span>DecodeFromBase64() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::DecodeFromBase64 </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>encodedStr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#a9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a>&#160;</td>
          <td class="paramname"><em>encodedLen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>rawStr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#ad2c573d4f1aaa30f60d82eadce4b1929" title="DecodeFromBase64() Decodes a Base64-encoded string to raw data.">DecodeFromBase64()</a></code> Decodes a Base64-encoded string to raw data. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">encodedStr</td><td>An <code><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6" title="The type for input string parameters. A const char *, a null-terminated UTF-8 string.">XMP_StringPtr</a></code> (char *) string containing the encoded data to be converted.</td></tr>
    <tr><td class="paramname">encodedLen</td><td>The number of characters of raw data to be converted.</td></tr>
    <tr><td class="paramname">rawStr</td><td>[out] A string object in which to return the decoded data. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ae6dce0fe1d2765dab14d4ca5e7814f52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6dce0fe1d2765dab14d4ca5e7814f52">&#9670;&nbsp;</a></span>DuplicateSubtree()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::DuplicateSubtree </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;&#160;</td>
          <td class="paramname"><em>source</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; *&#160;</td>
          <td class="paramname"><em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>sourceNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>sourceRoot</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>destNS</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>destRoot</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#aeb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&#160;</td>
          <td class="paramname"><em>options</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#ae6dce0fe1d2765dab14d4ca5e7814f52" title="DuplicateSubtree() replicates a subtree from one XMP object into another.">DuplicateSubtree()</a></code> replicates a subtree from one XMP object into another. </p>
<p>The destination can be a different namespace and root location in the same object, or the same or a different location in another XMP object.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">source</td><td>The source XMP object.</td></tr>
    <tr><td class="paramname">dest</td><td>The destination XMP object.</td></tr>
    <tr><td class="paramname">sourceNS</td><td>The schema namespace URI for the source subtree.</td></tr>
    <tr><td class="paramname">sourceRoot</td><td>The root location for the source subtree. Can be a general path expression, must not be null or the empty string.</td></tr>
    <tr><td class="paramname">destNS</td><td>The schema namespace URI for the destination. Defaults to the source namespace.</td></tr>
    <tr><td class="paramname">destRoot</td><td>The root location for the destination. Can be a general path expression. Defaults to the source location.</td></tr>
    <tr><td class="paramname">options</td><td>Option flags to control the operation. &lt;&lt;options?&gt;&gt; </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a66222ad61001d59f63a8ddb216040488"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66222ad61001d59f63a8ddb216040488">&#9670;&nbsp;</a></span>EncodeToBase64() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::EncodeToBase64 </td>
          <td>(</td>
          <td class="paramtype">const tStringObj &amp;&#160;</td>
          <td class="paramname"><em>rawStr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>encodedStr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a295acb3b212a88db95e8f448ee6ee514" title="These functions convert between raw data values and Base64-encoded strings.">EncodeToBase64()</a></code> converts a raw data value passed in a string object to a Base64-encoded string. </p>
<p>Overloads the basic form of the function, allowing you to pass a string object as input. It is otherwise identical. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rawStr</td><td>A string object containing the raw data to be converted.</td></tr>
    <tr><td class="paramname">encodedStr</td><td>[out] A string object in which to return the encoded string. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a295acb3b212a88db95e8f448ee6ee514"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a295acb3b212a88db95e8f448ee6ee514">&#9670;&nbsp;</a></span>EncodeToBase64() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::EncodeToBase64 </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>rawStr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#a9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a>&#160;</td>
          <td class="paramname"><em>rawLen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>encodedStr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>These functions convert between raw data values and Base64-encoded strings. </p>
<p><code><a class="el" href="classTXMPUtils.html#a295acb3b212a88db95e8f448ee6ee514" title="These functions convert between raw data values and Base64-encoded strings.">EncodeToBase64()</a></code> converts a raw data value to a Base64-encoded string.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rawStr</td><td>An <code><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6" title="The type for input string parameters. A const char *, a null-terminated UTF-8 string.">XMP_StringPtr</a></code> (char *) string containing the raw data to be converted.</td></tr>
    <tr><td class="paramname">rawLen</td><td>The number of characters of raw data to be converted.</td></tr>
    <tr><td class="paramname">encodedStr</td><td>[out] A string object in which to return the encoded string. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a2c545d270ea567da81427ae480fe2ce1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c545d270ea567da81427ae480fe2ce1">&#9670;&nbsp;</a></span>MergeFromJPEG()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::MergeFromJPEG </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; *&#160;</td>
          <td class="paramname"><em>fullXMP</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;&#160;</td>
          <td class="paramname"><em>extendedXMP</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a2c545d270ea567da81427ae480fe2ce1" title="MergeFromJPEG() merges standard and extended XMP retrieved from a JPEG file.">MergeFromJPEG()</a></code> merges standard and extended XMP retrieved from a JPEG file. </p>
<p>When an extended partition stores properties that do not fit into the JPEG file limitation of 64K bytes, this function integrates those properties back into the same XMP object with those from the standard XMP packet.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fullXMP</td><td>[in, out] An XMP object which the caller has initialized from the standard XMP packet in a JPEG file. The extended XMP is added to this object.</td></tr>
    <tr><td class="paramname">extendedXMP</td><td>An XMP object which the caller has initialized from the extended XMP packet in a JPEG file.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="classTXMPUtils.html#aecb05174386c3aee51905e134bdab39e" title="PackageForJPEG() creates XMP serializations appropriate for a JPEG file.">PackageForJPEG()</a></code> </dd></dl>

</div>
</div>
<a id="aecb05174386c3aee51905e134bdab39e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aecb05174386c3aee51905e134bdab39e">&#9670;&nbsp;</a></span>PackageForJPEG()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::PackageForJPEG </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;&#160;</td>
          <td class="paramname"><em>xmpObj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>standardXMP</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>extendedXMP</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">tStringObj *&#160;</td>
          <td class="paramname"><em>extendedDigest</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#aecb05174386c3aee51905e134bdab39e" title="PackageForJPEG() creates XMP serializations appropriate for a JPEG file.">PackageForJPEG()</a></code> creates XMP serializations appropriate for a JPEG file. </p>
<dl class="section note"><dt>Note</dt><dd>(Doc note) Add detail about how to write out and read back extended data The standard XMP in a JPEG file is limited to 64K bytes. This function serializes the XMP metadata in an XMP object into a string of RDF (see <code><a class="el" href="classTXMPMeta.html#a409638556748a506c6c240ff4e58b530" title="SerializeToBuffer() serializes metadata in this XMP object into a string as RDF.">TXMPMeta::SerializeToBuffer()</a></code>). If the data does not fit into the 64K byte limit, it creates a second packet string with the extended data.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">xmpObj</td><td>The XMP object containing the metadata.</td></tr>
    <tr><td class="paramname">standardXMP</td><td>[out] A string object in which to return the full standard XMP packet.</td></tr>
    <tr><td class="paramname">extendedXMP</td><td>[out] A string object in which to return the serialized extended XMP, empty if not needed.</td></tr>
    <tr><td class="paramname">extendedDigest</td><td>[out] A string object in which to return an MD5 digest of the serialized extended XMP, empty if not needed.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><code><a class="el" href="classTXMPUtils.html#a2c545d270ea567da81427ae480fe2ce1" title="MergeFromJPEG() merges standard and extended XMP retrieved from a JPEG file.">MergeFromJPEG()</a></code> </dd></dl>

</div>
</div>
<a id="ad6cbd2e12768e722315e5ff468ef3729"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad6cbd2e12768e722315e5ff468ef3729">&#9670;&nbsp;</a></span>RemoveProperties()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::RemoveProperties </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; *&#160;</td>
          <td class="paramname"><em>xmpObj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>schemaNS</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>propName</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#aeb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&#160;</td>
          <td class="paramname"><em>options</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#ad6cbd2e12768e722315e5ff468ef3729" title="RemoveProperties() removes multiple properties from an XMP object.">RemoveProperties()</a></code> removes multiple properties from an XMP object. </p>
<p>The operation depends on how the namespace and property are specified:</p>
<ul>
<li>Non-empty <code>schemaNS</code> and <code>propName</code> - The named property is removed if it is an external property, or if the <code><a class="el" href="XMP__Const_8h.html#a385c44f6fb256e5716a2302a5b940388a8ddfb0572b7602a52e533d92d8b1e9fb" title="Do all properties, default is just external properties.">kXMPUtil_DoAllProperties</a></code> option flag is set. It does not matter whether the named property is an actual property or an alias.</li>
</ul>
<ul>
<li>Non-empty <code>schemaNS</code> and empty <code>propName</code> - All external properties in the named schema are removed. Internal properties are also removed if the <code><a class="el" href="XMP__Const_8h.html#a385c44f6fb256e5716a2302a5b940388a8ddfb0572b7602a52e533d92d8b1e9fb" title="Do all properties, default is just external properties.">kXMPUtil_DoAllProperties</a></code> option flag is set. In addition, aliases from the named schema are removed if the <code><a class="el" href="XMP__Const_8h.html#a385c44f6fb256e5716a2302a5b940388a843589b878f53d42d59258f945ad770b" title="Include aliases, default is just actual properties.">kXMPUtil_IncludeAliases</a></code> option flag is set.</li>
</ul>
<ul>
<li>Empty <code>schemaNS</code> and empty <code>propName</code> - All external properties in all schemas are removed. Internal properties are also removed if the <code><a class="el" href="XMP__Const_8h.html#a385c44f6fb256e5716a2302a5b940388a8ddfb0572b7602a52e533d92d8b1e9fb" title="Do all properties, default is just external properties.">kXMPUtil_DoAllProperties</a></code> option flag is set. Aliases are handled implicitly, because the associated actuals are removed or not.</li>
</ul>
<ul>
<li>It is an error to pass an empty <code>schemaNS</code> and non-empty <code>propName</code>.</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">xmpObj</td><td>The XMP object containing the properties to be removed.</td></tr>
    <tr><td class="paramname">schemaNS</td><td>Optional schema namespace URI for the properties to be removed.</td></tr>
    <tr><td class="paramname">propName</td><td>Optional path expression for the property to be removed.</td></tr>
    <tr><td class="paramname">options</td><td>Option flags to control the deletion operation. A logical OR of these bit-flag constants: <ul>
<li><code><a class="el" href="XMP__Const_8h.html#a385c44f6fb256e5716a2302a5b940388a8ddfb0572b7602a52e533d92d8b1e9fb" title="Do all properties, default is just external properties.">kXMPUtil_DoAllProperties</a></code> - Delete internal properties in addition to external properties. </li>
<li><code><a class="el" href="XMP__Const_8h.html#a385c44f6fb256e5716a2302a5b940388a843589b878f53d42d59258f945ad770b" title="Include aliases, default is just actual properties.">kXMPUtil_IncludeAliases</a></code> - Include aliases if the schema is explicitly specified. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a3a48550bbff7417061d791402588fbdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a48550bbff7417061d791402588fbdb">&#9670;&nbsp;</a></span>SeparateArrayItems() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::SeparateArrayItems </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; *&#160;</td>
          <td class="paramname"><em>xmpObj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>schemaNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>arrayName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#aeb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&#160;</td>
          <td class="paramname"><em>options</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const tStringObj &amp;&#160;</td>
          <td class="paramname"><em>catedStr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a6a09713a03e5b43462556ca52b8b1301" title="SeparateArrayItems() updates an array from a concatenated edit string of values.">SeparateArrayItems()</a></code> updates an array from a concatenated edit string of values. </p>
<p>Overloads the basic form of the function, allowing you to pass a string object in which to return the concatenated string. It is otherwise identical; see details for the canonical form. </p>

</div>
</div>
<a id="a6a09713a03e5b43462556ca52b8b1301"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a09713a03e5b43462556ca52b8b1301">&#9670;&nbsp;</a></span>SeparateArrayItems() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::SeparateArrayItems </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; *&#160;</td>
          <td class="paramname"><em>xmpObj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>schemaNS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>arrayName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#aeb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&#160;</td>
          <td class="paramname"><em>options</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>catedStr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#a6a09713a03e5b43462556ca52b8b1301" title="SeparateArrayItems() updates an array from a concatenated edit string of values.">SeparateArrayItems()</a></code> updates an array from a concatenated edit string of values. </p>
<p>This reverses the action of <code><a class="el" href="classTXMPUtils.html#ae86c50953fb549006cf3a64ba1baa160" title="CatenateArrayItems() creates a single edit string from a set of array item values.">CatenateArrayItems()</a></code>, separating out individual array items from the edit string and updating the array with the new values. Each item in the array must be a simple string value.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">xmpObj</td><td>The XMP object containing the array to be updated.</td></tr>
    <tr><td class="paramname">schemaNS</td><td>The schema namespace URI for the array. Must not be null or the empty string.</td></tr>
    <tr><td class="paramname">arrayName</td><td>The name of the array. May be a general path expression, must not be null or the empty string.</td></tr>
    <tr><td class="paramname">options</td><td>Option flags to control the separation. &lt;&lt;what options?&gt;&gt;</td></tr>
    <tr><td class="paramname">catedStr</td><td>The concatenated array items, as created by <code><a class="el" href="classTXMPUtils.html#ae86c50953fb549006cf3a64ba1baa160" title="CatenateArrayItems() creates a single edit string from a set of array item values.">CatenateArrayItems()</a></code>, specified as a null-terminated UTF-8 string. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a89785bcbe5530085002a68b7bfb09384"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a89785bcbe5530085002a68b7bfb09384">&#9670;&nbsp;</a></span>SetClientString()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::SetClientString </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>clientPtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#ad439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&#160;</td>
          <td class="paramname"><em>valuePtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="XMP__Const_8h.html#a9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a>&#160;</td>
          <td class="paramname"><em>valueLen</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ad2ebcf9473500d3d1e10fed4b9072f7d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2ebcf9473500d3d1e10fed4b9072f7d">&#9670;&nbsp;</a></span>SetTimeZone()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void TXMPUtils::SetTimeZone </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> *&#160;</td>
          <td class="paramname"><em>time</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><code><a class="el" href="classTXMPUtils.html#ad2ebcf9473500d3d1e10fed4b9072f7d" title="SetTimeZone() sets the time zone in a date/time value to the local time zone.">SetTimeZone()</a></code> sets the time zone in a date/time value to the local time zone. </p>
<p>Any existing time zone value is replaced. The other date/time fields are not adjusted in any way.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">time</td><td>A pointer to the date-time value, which is modified in place. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>public/include/<a class="el" href="TXMPMeta_8hpp_source.html">TXMPMeta.hpp</a></li>
<li>public/include/<a class="el" href="TXMPUtils_8hpp_source.html">TXMPUtils.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classTXMPUtils.html">TXMPUtils</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>
